package br.com.officium.managedbean.cadastro;

import br.com.officium.entidade.cadastro.Acao;
import br.com.officium.sessionbean.AcaoBsn;
import br.com.officium.util.BeanUtil;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Ivo
 */
@ManagedBean
@ViewScoped
public class AcaoBean extends CadastroAbstractBean {

    @EJB
    private AcaoBsn acaoBsn;
    private Acao acao;
    private List<Acao> acoes;

    public AcaoBean() {
        this.acao = new Acao();
    }

    @Override
    public String listar() {
        setCurrentState(LISTAR_STATE);
        acoes = acaoBsn.findAll();
        return "/cadastro/acao.jsf";
    }

    @Override
    public void cadastrar() {

        try {
            acaoBsn.create(acao);
            clear();
            BeanUtil.addInfo("Ação criada com sucesso.");
            acoes = acaoBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public void editar() {
        try {
            acaoBsn.edit(acao);
            clear();
            setCurrentState(LISTAR_STATE);
            BeanUtil.addInfo("Ação alterada com sucesso.");
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }
    }

    @Override
    public void excluir() {
        try {
            acaoBsn.remove(acao);
            BeanUtil.addInfo("Ação removida com sucesso.");
            acoes = acaoBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }
    }

    @Override
    public boolean isPaginator() {
        return this.acaoBsn.count() > getRowNumber();
    }

    private void clear() {
        this.acao = new Acao();
        super.cleanSubmittedValues(panelForm);
    }

    public Acao getAcao() {
        return acao;
    }

    public void setAcao(Acao acao) {
        this.acao = acao;
    }

    public List<Acao> getAcoes() {
        return acoes;
    }

    public void setAcoes(List<Acao> acoes) {
        this.acoes = acoes;
    }

}
